package beans;

import java.util.Comparator;

/**
 * Beans Etudiant permettant la sauvegarde d'un étudiant dans la base de données
 * @author Amanda & Rami
 */
public class Etudiant implements Comparator<Etudiant> {

    private int idEtudiant;
    private String nom;
    private String prenom;
    private String mail;

    /**
     * Constructeur par défaut
     */
    public Etudiant() {
        this.idEtudiant = 0;
        this.nom = null;
        this.prenom = null;
        this.mail = null;
    }

    /**
     * Constructeur prenant en paramètre l'identifiant de l'étudiant
     * @param idEtudiant
     */
    public Etudiant(int idEtudiant) {
        this.idEtudiant = idEtudiant;
        this.nom = null;
        this.prenom = null;
        this.mail = null;
    }

    /**
     * Constructeur prenant en paramètre le nom de l'étudiant
     * @param nom Nom de l'étudiant
     */
    public Etudiant(String nom) {
        this.idEtudiant = 0;
        this.nom = nom;
        this.prenom = null;
        this.mail = null;
    }

    /**
     *  Constructeur prenant en paramètre l'identifiant, le nom, le prénom de l'étudiant
     * @param idEtudiant Identifiant de l'étudiant
     * @param nom Nom de l'étudiant
     * @param prenom Prénom de l'étudiant
     */
    public Etudiant(int idEtudiant, String nom, String prenom) {
        this.idEtudiant = idEtudiant;
        this.nom = nom;
        this.prenom = prenom;
        this.mail = "none";
    }

    /**
     * Constructeur prenant en paramètre l'id, le nom, le prénom, l'adresse email de l'étudiant
     * @param idEtudiant Identifiant de l'étudiant
     * @param nom Nom de l'étudiant
     * @param prenom Prénom de l'étudiant
     * @param mail Adresse email de l'étudiant
     */
    public Etudiant(int idEtudiant, String nom, String prenom, String mail) {
        this.idEtudiant = idEtudiant;
        this.nom = nom;
        this.prenom = prenom;
        this.mail = mail;
    }

    /**
     * Getter / Setter
     * @return idEtudiant
     */
    public int getIdEtudiant() {
        return idEtudiant;
    }

    /**
     * Getter / Setter
     * @return mail
     */
    public String getMail() {
        return mail;
    }

    /**
     * Getter / Setter
     * @return nom
     */
    public String getNom() {
        return nom;
    }

    /**
     * Getter / Setter
     * @return prenom
     */
    public String getPrenom() {
        return prenom;
    }

    /**
     * Getter / Setter
     * @param idEtudiant Identifiant de l'étudiant
     */
    public void setIdEtudiant(int idEtudiant) {
        this.idEtudiant = idEtudiant;
    }

    /**
     * Getter / Setter
     * @param mail Adresse email de l'étudiant
     */
    public void setMail(String mail) {
        this.mail = mail;
    }

    /**
     * Getter / Setter
     * @param nom Nom de l'étudiant
     */
    public void setNom(String nom) {
        this.nom = nom;
    }

    /**
     * Getter / Setter
     * @param prenom Prénom de l'étudiant
     */
    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    @Override
    public int hashCode() {
        return this.idEtudiant;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Etudiant other = (Etudiant) obj;
        if (this.idEtudiant != other.idEtudiant) {
            return false;
        }
        return true;
    }

    public int compare(Etudiant o1, Etudiant o2) {
        if (o1.getIdEtudiant() == o2.getIdEtudiant()) {
            return 0;
        } else {
            return -1;
        }
    }
}
